perm filename L2[F8,ALS]2 blob
sn#315704 filedate 1977-11-08 generic text, type T, neo UTF8
1 *CHECKERS as of November 6 1977. EQU's
2 * S2 section
3 *Resident package addresses
4 JOYT EQU H'0C00'
5 LINE EQU H'0FDF'
6 SHCB EQU H'0FE2'
7 INPF EQU H'0FE3'
8 WTLN EQU H'0FE5'
9 TXC EQU H'0FE8'
10 CMRG EQU H'0FEA'
11 DBNC EQU H'0FEB'
12 UPI EQU H'0FFA'
13 JOYI EQU H'21AD'
14 IJS EQU H'22DB'
15 SHL EQU H'27C6'
16 SHR EQU H'27D3'
17 PUSH EQU H'40A9'
18 POPS EQU H'40BC'
19 SPS EQU H'40D0'
20 WDG EQU H'4105'
21 WAUD EQU H'41C8'
22 WAU1 EQU H'41CC'
23 CDS EQU H'41D5'
24 WMS EQU H'4205'
25 UDAT EQU H'424D'
26 TRAN EQU H'43CD'
27 FCS EQU H'43D6'
28 WAIT EQU H'4501'
29 TIR EQU H'45DB'
30 CLER EQU H'4762'
31 *Misc. constants
32 TCMD EQU H'44'
33 BCMD EQU H'6D'
34 TCOL EQU H'80' TEXT COLOR
35 ULIN EQU H'F5'
36 COM EQU H'8F7'
37 *
38 *RAM assignments
39 BFLG EQU H'0C20'
40 BLNF EQU H'0C21' Blink flag
41 XBLN EQU H'0C22' X value to blink
42 YBLN EQU H'0C23' Y value to blink
43 BCNT EQU H'0C24' Counter used in OKMV
44 BKMV EQU H'0C25' Data to index book moves
45 HSAV EQU H'0C26' H save location
46 HSAL EQU H'0C27' HL save location
47 PLY0 EQU H'0C28' Players choice of ply depth
48 COL0 EQU H'0C29' 0 if machine plays black
49 SELX EQU H'0C2A' Move count
50 OBJ0 EQU H'0C30' Board 1, thru H'0E0F'
51 TREE EQU H'0E10' Tree data, thru H'0EFF', Player's b
52 TRE2 EQU H'0E20' Machine's first board here
53 TRE3 EQU H'0E30' PLY 1 location
54 TRE5 EQU H'0E50' PLY 3 location
55 PLMD EQU H'0E5B' Used for temp store of player's mov
56 PLMV EQU H'0ED0' Overlay region used for player's mo
57 PLMF EQU H'0EE0' and move numbers
58 SCOR EQU H'0EF0' 28 bytes for scores
59 XPOS EQU H'0F0C' XPOSITION(CURSOR)
60 YPOS EQU H'0F0F' YPOSITION(CURSOR)
61 OBJ1 EQU H'0F10' Board 2, thru H'0FAF'
62 MOBS EQU H'0FB0' Mobility and DJ flags (14 bytes)
63 RGSV EQU H'0FC1' Register save start (int. update)
64 *
65 *Scratch pad assignments
66 TEMP EQU H'8'
67 J EQU H'9'
68 HU EQU H'A'
69 HL EQU H'B'
70 PLOC EQU O'3' LISU value for ACTIVE and PASSIVE
71 KLOC EQU O'4' LISU value for KING's and special d
72 ELOC EQU O'5' LISU value for EMPTY's area
73 ISA EQU O'30' ISAR value for active area
74 ISP EQU O'34' ISAR value for passive
75 ISK EQU O'40' ISAR value for kings
76 ACTM EQU O'46' Location of Active material count
77 PASM EQU O'47' Location of Passive material count
78 ISE0 EQU O'50' ISAR value for guard byte
79 ISE EQU O'51' ISAR value foempty (with offset)
80 *Mimimum ply depths
81 PLYT EQU H'FE' Ply depth for Robot Tom (stored as
82 PLYD EQU H'FD' Ply depth for Robot Dick
83 PLYH EQU H'FC' Ply depth for Robot Harry
84 *SPECIAL CONSTANTS
85 X EQU H'1'
86 Y EQU H'2'
87 VX EQU H'3'
88 VY EQU H'4'
89 CHT EQU H'3' CURSOR HEIGHT
90 YTST EQU H'9'
91 XZOP EQU H'34' Line for restorre of X zoom
92 MAXY EQU H'4D' MAX Y COORD (=H'4F'-CHT)
93 *Linkage locations
94 PMOV EQU H'1100' Player's move
95 WMC EQU H'1200' Write message
96 BORD EQU H'1300' Normal redo of board
97 SHOW EQU H'1780' Debugging aid to show board
98 ORG H'1800' SELE JUMP
99 *-*-*-
100 1800 28 17 80 SELE PI SHOW
101 1803 28 1E E9 PI WAST Debugging show board
102 1806 63 LISU PLOC
103 1807 68 LISL 0
104 1808 10 LR DC,H
105 1809 7C LIS H'C' To get MOVE byte
106 180A 8E ADC
107 180B 16 LM
108 180C 50 LR 0,A Save it temporarily
109 180D F0 NS 0 To set status byte
110 180E 94 04 BNZ SEL3
111 1810 29 1A C7 JMP NEXT To get next MOVE byte
112 1813 20 FF SEL3 LI H'FF'
113 1815 8E ADC Get back to move byte
114 1816 40 LR A,0
115 1817 24 FF AI H'FF' Really subtracting 1
116 1819 F0 NS 0 Remove right-most on-bit
117 181A 17 ST Put remaining bits back (and index
118 181B E0 XS 0 This gets the extracted bit
119 181C 56 LR 6,A Save it in 6
120 181D 16 LM Now get the byte designation
121 181E 55 SEL4 LR 5,A
122 181F 12 SR 1
123 1820 12 SR 1
124 1821 21 03 NI H'3' Separate the byte indicator part
125 1823 54 LR 4,A Save it in 4
126 1824 45 LR A,5
127 1825 21 13 NI H'13' Separate the JUMP bit and the dire
128 1827 55 LR 5,A Save them in 5
129 1828 20 18 DELE LI ISA Process Active and Kings for sourc
130 182A C4 AS 4 Add byte #
131 182B 0B LR IS,A Get to initial byte
132 182C 4C LR A,S
133 182D 53 LR 3,A
134 182E E6 XS 6 Delete moving piece
135 182F 5C LR S,A from byte
136 1830 64 LISU KLOC To get to corresponding KING byte
137 1831 4C LR A,S
138 1832 F6 NS 6 Was the piece a king?
139 1833 84 04 BZ DEL2
140 1835 EC XS S If it was delete king bit
141 1836 5C LR S,A
142 1837 77 LIS H'7' Non-zero in 2 for king
143 1838 52 DEL2 LR 2,A 0 for man, 7 for king, (later 1 fo
144 1839 63 LISU PLOC Back to active section
145 *Now locate captured piece if jump or find destination in normal m
146 183A 46 LR A,6 Recall MOVE bit
147 183B 14 SR 4
148 183C 84 12 BZ INRH Bit was in right half of byte
149 183E 53 INLH LR 3,A Save partially shifted MOVE bit
150 183F 45 LR A,5 Get direction
151 1840 21 01 NI H'1' To test right-most bit
152 1842 84 04 BZ INL2 RF or LB move where 4 shift is cor
153 1844 43 LR A,3
154 1845 12 SR 1 LF and LB require an additional sh
155 1846 53 LR 3,A
156 1847 45 INL2 LR A,5 Now test for fore or aft
157 1848 21 02 NI H'2'
158 184A 84 15 BZ BOTH Forward move, no byte shift needed
159 184C 4E LR A,D Only to decrement ISAR
160 184D 90 12 INL3 BR BOTH
161 *
162 184F 46 INRH LR A,6 Get MOVE bit again
163 1850 15 SL 4 Left shift if in right half
164 1851 53 LR 3,A Save partially shifted MOVE bit
165 1852 45 LR A,5 Get direction
166 1853 21 01 NI H'1'
167 1855 94 04 BNZ INR2 LF or LB where 4 shift is correct
168 1857 43 LR A,3
169 1858 13 SL 1 RF and RB require an additional sh
170 1859 53 LR 3,A
171 185A 45 INR2 LR A,5 Now test fore and aft
172 185B 21 02 NI H'2'
173 185D 94 02 BNZ BOTH
174 185F 4D LR A,I Only to increment ISAR
175 1860 45 BOTH LR A,5 Now is this a jump or a normal mov
176 *ISAR still points to active region but may designate
177 *an empty square or the capture square
178 1861 21 10 NI H'10' Set status for jump bit
179 1863 94 04 BNZ JUMP
180 1865 29 19 26 JMP NORM It's a normal move
181 1868 0A JUMP LR A,IS
182 1869 24 04 AI H'4' To get to passive pieces
183 186B 0B LR IS,A
184 186C 4C LR A,S
185 186D E3 XS 3 Remove captured piece
186 186E 5C LR S,A
187 186F 0A LR A,IS
188 1870 24 04 AI H'4' Corresponding king location
189 1872 0B LR IS,A
190 1873 4C LR A,S Get byte
191 1874 F3 NS 3 Is the piece a king?
192 1875 84 07 BZ JUM1
193 1877 E3 XS 3 Remove it
194 1878 5C LR S,A
195 1879 20 FD LI -H'3'
196 187B 90 03 BR JU11
197 187D 20 FE JUM1 LI -H'2'
198 187F 50 JU11 LR 0,A
199 1880 20 27 LI PASM
200 1882 0B LR IS,A
201 1883 4C LR A,S
202 1884 C0 AS 0
203 1885 5C LR S,A
204 1886 20 18 LI ISA Back to moved-from location
205 1888 C4 AS 4 Byte number is in 4
206 1889 0B LR IS,A
207 188A 45 LR A,5
208 188B 21 02 NI H'2' Test for fore or aft
209 188D 84 04 BZ JUMA Fore move
210 188F 4E LR A,D Decrement ISAR (destination always
211 1890 90 02 BR JUMB
212 1892 4D JUMA LR A,I Increment ISAR
213 1893 0A JUMB LR A,IS Get the destination byte off-set
214 1894 24 E8 AI H'E8' by subtracting O'30' from ISAR val
215 1896 54 LR 4,A needed if there is a continuation
216 1897 45 LR A,5 Get direction
217 1898 21 01 NI H'1' Test for right or left
218 189A 46 LR A,6 Get original piece location
219 189B 84 04 BZ JUM2 0 for R move, ≠0 for L move
220 189D 12 SR 1 Left moves involve a right shift o
221 189E 90 02 BR JUM3
222 18A0 13 JUM2 SL 1 Right moves involve a left shift o
223 18A1 53 JUM3 LR 3,A Save bit byte in 3, freeing 6 for
224 18A2 4C LR A,S
225 18A3 E3 XS 3 Set piece down
226 18A4 5C LR S,A
227 18A5 70 CLR
228 18A6 C2 AS 2 Was the piece a king?
229 18A7 84 05 BZ JUMC No, might be a promotion
230 18A9 70 CLR
231 18AA 50 LR 0,A Temporary record of promotion cred
232 18AB 90 1A BR JUM6 Already a king so no promotion
233 18AD 70 JUMC CLR
234 18AE E7 XS 7 Which side is active
235 18AF 0A LR A,IS
236 18B0 84 09 BZ JUM4 0 if forward
237 18B2 25 18 CI O'30' Is this byte 0?
238 18B4 94 29 BNZ JU71 No, so no promotion
239 18B6 20 F0 LI H'F0' and the king row?
240 18B8 90 06 BR JUM5 Promotion indicated, no double jum
241 18BA 25 1B JUM4 CI O'33' Is this byte 3?
242 18BC 94 21 BNZ JU71 No, so no promotion
243 18BE 7F LIS H'F' and the king row?
244 18BF F3 JUM5 NS 3
245 18C0 84 1D BZ JU71 No
246 18C2 71 LIS H'1' 1 for promotion
247 18C3 52 LR 2,A It was 0
248 18C4 50 LR 0,A Credit for promotion
249 18C5 56 LR 6,A Used in FIND for no continuation
250 18C6 64 JUM6 LISU KLOC Get to King position
251 18C7 4C LR A,S
252 18C8 C3 AS 3 Put down the king
253 18C9 5C LR S,A
254 18CA 40 LR A,0
255 18CB 25 01 CI H'1' Was there a promotion?
256 18CD 84 10 BZ JU71 No
257 18CF 20 26 LI ACTM Yes
258 18D1 0B LR IS,A
259 18D2 4C LR A,S
260 18D3 1F INC Add for promotion
261 18D4 5C LR S,A
262 18D5 90 05 BR JUM9 Can be no continuation if promotio
263 18D7 70 JUM7 CLR
264 18D8 E0 XS 0 Should we check for a double jump?
265 18D9 84 04 BZ JU71 Yes, a 0 means no promotion
266 18DB 29 19 59 JUM9 JMP FORE
267 * Set up conditions to try to find a continuation
268 18DE 29 19 59 JU71 JMP FORE DEBUGGING BYPASS ----
269 18E1 20 FF LI -H'1' Signal for continuation FIND
270 18E3 56 LR 6,A
271 18E4 10 LR DC,H
272 18E5 20 1C LI H'1C' Get to byte location
273 18E7 8E ADC in the "passed board" position
274 18E8 43 LR A,3 Save destination info
275 18E9 17 ST the move byte
276 18EA 44 LR A,4
277 18EB 17 ST and the byte #
278 18EC 20 FF LI -H'1' and a flag of -1
279 18EE 17 ST in the ACTM position
280 18EF 2A 0E F0 DCI SCOR Advance score
281 18F2 4B LR A,HL
282 18F3 14 SR 4
283 18F4 24 FF AI -H'1'
284 18F6 13 SL 1
285 18F7 8E ADC from current board
286 18F8 0E LR Q,DC
287 18F9 16 LM
288 18FA 50 LR 0,A
289 18FB 16 LM
290 18FC 51 LR 1,A
291 18FD 0F LR DC,Q
292 18FE 24 04 AI H'4'
293 1900 8E ADC to continuation board
294 1901 40 LR A,0
295 1902 17 ST
296 1903 41 LR A,1
297 1904 17 ST
298 1905 10 LR DC,H Advance H and
299 1906 20 20 LI H'20' copy data two blocks forward
300 1908 8E ADC
301 1909 11 LR H,DC
302 190A 63 LISU PLOC SC to RA direct
303 190B 68 LISL 0
304 190C 4D JU72 LR A,I
305 190D 17 ST
306 190E 8F FD BR7 JU72
307 1910 4D LR A,I
308 1911 17 ST
309 1912 64 LISU KLOC
310 1913 4D JU73 LR A,I
311 1914 17 ST
312 1915 8F FD BR7 JU73
313 1917 4D LR A,I
314 1918 17 ST
315 1919 43 LR A,3
316 191A 51 LR 1,A Mask for FIND
317 191B 10 LR DC,H
318 191C 28 1A 36 PI RASC Load scratchpad
319 191F 10 LR DC,H
320 1920 28 1E 96 PI EMPT
321 1923 29 1B 36 JMP RFJ Find continuations if any
322 * NORM FORE
323 *Now make normal move
324 1926 10 NORM LR DC,H Back in step
325 1927 70 CLR
326 1928 50 LR 0,A Flag for no promotion
327 1929 63 LISU PLOC Get back to Active pieces
328 192A 4C LR A,S LISL still OK
329 192B C3 AS 3
330 192C 5C LR S,A Put in moved piece
331 192D 42 LR A,2 Was it a king
332 192E F2 NS 2
333 192F 94 1B BNZ NOM6 Yes so don't promote but do put ki
334 1931 45 LR A,5
335 1932 21 02 NI H'2' Test for direction
336 1934 84 0A BZ NOM4 Is it going forward?
337 1936 0A LR A,IS No
338 1937 25 30 CI H'30' Did it get to the byte 0?
339 1939 94 1F BNZ FORE No
340 193B 20 F0 LI H'F0' and in king row?
341 193D 90 08 BR NOM5 Mark for promotion
342 193F 0A NOM4 LR A,IS Going forward case
343 1940 25 33 CI H'33' Did it get to byte 3?
344 1942 94 16 BNZ FORE No
345 1944 20 0F LI H'F' and in king row?
346 1946 F3 NOM5 NS 3
347 1947 84 11 BZ FORE No
348 1949 71 LIS H'1'
349 194A 50 LR 0,A A promotion flag
350 194B 64 NOM6 LISU KLOC Now get to king byte
351 194C 4C LR A,S Get corresponding king byte for de
352 194D C3 AS 3 Insert king
353 194E 5C LR S,A And replace byte
354 194F 70 CLR
355 1950 C0 AS 0
356 1951 84 07 BZ FORE
357 1953 20 26 LI ACTM Get to active material location
358 1955 0B LR IS,A
359 1956 4C LR A,S
360 1957 1F INC Credit for promotion
361 1958 5C LR S,A
362 1959 4B FORE LR A,HL Where are we?
363 195A 25 10 CI H'10'
364 195C 84 5A BZ FOR5 Player's move has been made
365 195E 28 17 80 FOR2 PI SHOW DEBUGGING AID
366 1961 28 1E E9 PI WAST
367 1964 47 LR A,7
368 1965 18 COM Change color
369 1966 57 LR 7,A
370 1967 10 LR DC,H GET back in step
371 1968 20 10 LI H'10'
372 196A 8E ADC
373 196B 11 LR H,DC
374 196C 28 1A 47 PI SCRA Prepare for normal advance
375 196F 4B LR A,HL Can we advance score?
376 1970 14 SR 4
377 1971 25 02 CI H'2'
378 1973 81 1E BP FOR4 Don't advance score and could be s
379 1975 24 FF AI -H'1' Start at zero
380 1977 13 SL 1 Scores take 2 bytes each so *2
381 1978 2A 0E F0 DCI SCOR
382 197B 8E ADC Current location
383 197C 2C XDC
384 197D 2A 0E F0 DCI SCOR
385 1980 24 FC AI -H'4'
386 1982 8E ADC Get to earlier entry
387 1983 16 LM Copy it
388 1984 2C XDC
389 1985 17 ST
390 1986 2C XDC
391 1987 16 LM
392 1988 2C XDC
393 1989 17 ST
394 198A 4B LR A,HL Where are we?
395 198B 25 30 CI H'30'
396 198D 81 04 BP FOR4 Still could be special
397 198F 29 1B 22 FOR3 JMP FIND Go forward normally
398 1992 2A 0C 2A FOR4 DCI SELX
399 1995 0E LR Q,DC
400 1996 16 LM
401 1997 25 01 CI H'1'
402 1999 91 F5 BM FOR3 Normal play
403 199B 1F INC Book or random move has been made
404 199C 17 ST so count this as a move
405 199D 70 CLR Clear start of PLMV list for
406 199E 2A 0E D0 DCI PLMV listing player's possible moves
407 19A1 17 ST
408 19A2 10 LR DC,H
409 19A3 2C XDC
410 19A4 2A 0E 10 DCI TREE Prepare for TRAN
411 19A7 11 LR H,DC
412 19A8 20 10 LI H'10'
413 19AA 62 LISU 2
414 19AB 68 LISL 0
415 19AC 5C LR S,A
416 19AD 28 43 CD PI TRAN
417 19B0 2A 0E 10 DCI TREE
418 19B3 11 LR H,DC
419 19B4 29 1B 22 JMP FIND FIND exits to PMOV when HL is H'10
420 19B7 28 13 00 FOR5 PI BORD Show board after players move
421 19BA 20 04 LI H'4' "MY MOVE"
422 19BC 50 LR 0,A
423 19BD 28 12 00 PI WMC
424 19C0 2A 0E F0 DCI SCOR Start scores off at H'8010'
425 19C3 20 80 LI H'80' so that adding PLY-10 will
426 19C5 17 ST not yield a number that
427 19C6 20 10 LI H'10' can not be negated
428 19C8 17 ST
429 19C9 20 80 LI H'80'
430 19CB 17 ST
431 19CC 20 10 LI H'10'
432 19CE 17 ST
433 19CF 47 LR A,7
434 19D0 18 COM Change color
435 19D1 57 LR 7,A
436 19D2 10 LR DC,H Advance H
437 19D3 20 10 LI H'10'
438 19D5 8E ADC
439 19D6 11 LR H,DC
440 19D7 28 1A 47 PI SCRA SC to RA with sides reversed
441 19DA 10 LR DC,H
442 19DB 28 1A 36 PI RASC RA to SC preparing for a normal mo
443 19DE 2A 0C 2A DCI SELX
444 19E1 0E LR Q,DC
445 19E2 16 LM
446 19E3 1F INC Add 1 to move count
447 19E4 0F LR DC,Q
448 19E5 17 ST
449 19E6 25 01 CI H'1'
450 19E8 84 04 BZ FOR6 Use stored move
451 19EA 29 1B 22 JMP FIND Go find normal reply
452 19ED 62 FOR6 LISU 2 Get random number
453 19EE 6D LISL 5
454 19EF 4C LR A,S
455 19F0 21 03 NI H'3' 0 to 3 random number
456 19F2 50 LR 0,A
457 19F3 12 SR 1
458 19F4 51 LR 1,A 0 to 1 random number
459 19F5 40 LR A,0
460 19F6 21 01 NI H'1'
461 19F8 50 LR 0,A 2nd 0 to 1 random number
462 * Machine to make 2nd move from book
463 19F9 2A 0C 25 DCI BKMV Get stored move munber
464 19FC 16 LM
465 19FD 13 SL 1 X2, 2 entries for each input move
466 19FE C0 AS 0 Random choice between them
467 19FF 2A 1E DB DCI BOK2 Stored table of book replies
468 1A02 8E ADC
469 1A03 16 LM Get reply number
470 1A04 50 LR 0,A
471 1A05 70 CLR Use second number to select which
472 1A06 E1 XS 1
473 1A07 40 LR A,0
474 1A08 84 02 BZ BMV2
475 1A0A 14 SR 4
476 1A0B 21 07 BMV2 NI H'7'
477 1A0D 50 LR 0,A The final selection
478 1A0E 2A 1A 31 DCI REDM Possible Red moves
479 1A11 16 BM17 LM Get byte record
480 1A12 51 LR 1,A
481 1A13 41 BM18 LR A,1
482 1A14 F1 NS 1
483 1A15 94 04 BNZ BM19 Is this byte exhausted?
484 1A17 16 LM Step over byte info
485 1A18 90 F8 BR BM17 Go to next byte record
486 1A1A 52 BM19 LR 2,A
487 1A1B 24 FF AI H'FF' Subtract 1
488 1A1D F1 NS 1
489 1A1E 51 LR 1,A byte less rightmost bit
490 1A1F E2 XS 2 This leaves 1 bit in A
491 1A20 30 DS 0
492 1A21 81 F1 BP BM18
493 1A23 56 LR 6,A Save the byte bit
494 1A24 16 LM Get the byte info
495 1A25 54 LR 4,A The byte indicator
496 1A26 10 LR DC,H
497 1A27 7C LIS H'C'
498 1A28 8E ADC
499 1A29 46 LR A,6
500 1A2A 17 ST
501 1A2B 44 LR A,4
502 1A2C 17 ST
503 1A2D 10 LR DC,H
504 1A2E 29 18 00 JMP SELE
505 *-*-*- Initial moves for red
506 1A31 07 REDM DC B'00000111' 3 pieces
507 1A32 0A DC B'00001010' Byte 2, RB
508 1A33 0F DC B'00001111' 4 pieces
509 1A34 0B DC B'00001011' Byte 2, LB
510 1A35 00 DC H'00'
511 * RASC SCRA FKT STMV
512 *-*-*- RASC RAM to SC transfer
513 1A36 08 RASC LR K,P RAM to SC
514 1A37 63 LISU PLOC ←SC buffer with Active and Passive
515 1A38 68 LISL 0
516 1A39 16 RAS2 LM
517 1A3A 5D LR I,A
518 1A3B 8F FD BR7 RAS2
519 1A3D 16 LM
520 1A3E 5D LR I,A
521 1A3F 64 LISU KLOC
522 1A40 16 RAS3 LM
523 1A41 5D LR I,A
524 1A42 8F FD BR7 RAS3
525 1A44 16 LM
526 1A45 5D LR I,A
527 1A46 0C PK
528 * SCRA SC to RAM with side reversal
529 1A47 08 SCRA LR K,P SC to RAM for side reversal
530 1A48 28 40 A9 PI PUSH
531 1A4B 63 LISU PLOC
532 1A4C 6C LISL 4
533 1A4D 74 LIS H'4'
534 1A4E 50 LR 0,A
535 1A4F 28 1A 6D PI SCRL
536 1A52 68 LISL 0
537 1A53 74 LIS H'4'
538 1A54 50 LR 0,A
539 1A55 28 1A 6D PI SCRL
540 1A58 64 LISU KLOC
541 1A59 68 LISL 0
542 1A5A 74 LIS H'4'
543 1A5B 50 LR 0,A
544 1A5C 28 1A 6D PI SCRL
545 1A5F 70 CLR Zero MOVE byte
546 1A60 17 ST
547 1A61 17 ST and move info
548 1A62 4D LR A,I To index only
549 1A63 4D LR A,I
550 1A64 4D LR A,I
551 1A65 4E LR A,D Reverse ACTM and PASM
552 1A66 17 ST
553 1A67 4E LR A,D
554 1A68 17 ST
555 1A69 28 40 BC PI POPS
556 1A6C 0C PK
557 *
558 1A6D 08 SCRL LR K,P Used by SCRA and SCRD
559 1A6E 4D SCR3 LR A,I
560 1A6F 17 ST
561 1A70 30 DS 0
562 1A71 94 FC BNZ SCR3
563 1A73 0C PK
564 *-*-*- Test if Kings only can move
565 1A74 08 FKT LR K,P
566 1A75 70 CLR
567 1A76 C7 AS 7
568 1A77 94 09 BNZ FK1 Only kings in this direction
569 1A79 70 FKT2 CLR
570 1A7A E3 XS 3
571 1A7B 0C PK Normal pieces OK
572 1A7C 08 BKT LR K,P
573 1A7D 70 CLR
574 1A7E C7 AS 7 Test sides for backward move
575 1A7F 94 08 BNZ FK2 NORMAL pieces can move
576 1A81 20 20 FK1 LI ISK
577 1A83 C4 AS 4
578 1A84 0B LR IS,A KINGS only can move
579 1A85 4C LR A,S
580 1A86 F3 NS 3
581 1A87 53 LR 3,A
582 1A88 0C FK2 PK
583 *Subroutine to add to MOBILITY, and to store MOVE and FLAG bytes i
584 1A89 08 STMV LR K,P
585 1A8A 4B LR A,HL
586 1A8B 14 SR 4
587 1A8C 25 01 CI H'01' Is this the player's board
588 1A8E 94 19 BNZ STM3 No
589 1A90 2A 0E D0 DCI PLMV Player's moves stored separately
590 1A93 70 STM0 CLR
591 1A94 8C XM
592 1A95 84 04 BZ STM1 Find empty space
593 1A97 16 LM Skip info space
594 1A98 90 FA BR STM0 Try again
595 1A9A 20 FF STM1 LI H'FF' Back up
596 1A9C 8E ADC
597 1A9D 43 LR A,3
598 1A9E 17 ST
599 1A9F 44 LR A,4
600 1AA0 13 SL 1
601 1AA1 13 SL 1
602 1AA2 C5 AS 5
603 1AA3 17 ST
604 1AA4 70 CLR
605 1AA5 17 ST Store 0 as stop
606 1AA6 90 10 BR STM2
607 1AA8 70 STM3 CLR
608 1AA9 E2 XS 2 To set status byte
609 1AAA 94 0C BNZ STM2 One is already stored
610 1AAC 10 LR DC,H Get back in step (may not be neces
611 1AAD 7C LIS H'C' To get to MOVE byte
612 1AAE 8E ADC
613 1AAF 43 STM4 LR A,3
614 1AB0 17 ST Store MOVE byte in RAM
615 1AB1 44 LR A,4 Get the byte pointer
616 1AB2 13 SL 1
617 1AB3 13 SL 1
618 1AB4 C5 AS 5
619 1AB5 17 ST Put this into RAM
620 1AB6 10 LR DC,H May be necessary
621 1AB7 70 STM2 CLR
622 1AB8 50 LR 0,A To accumulate count
623 1AB9 43 LR A,3
624 1ABA 30 STM5 DS 0
625 1ABB 24 FF AI H'FF'
626 1ABD F3 NS 3 Removes rightmost bit
627 1ABE 53 LR 3,A
628 1ABF 94 FA BNZ STM5
629 1AC1 40 LR A,0
630 1AC2 18 COM
631 1AC3 1F INC
632 1AC4 C2 AS 2 Add in previous count
633 1AC5 52 LR 2,A
634 1AC6 0C PK
635 * NEXT FIND RFJ LFJ RBJ LBJ
636 1AC7 10 NEXT LR DC,H
637 1AC8 20 FC LI -H'4' Look to earlier board data
638 1ACA 8E ADC
639 1ACB 16 LM
640 1ACC 51 LR 1,A Get move byte just in case
641 1ACD 16 LM
642 1ACE 54 LR 4,A and byte info
643 1ACF 70 CLR
644 1AD0 52 LR 2,A
645 1AD1 8C XM Now look at ACTM
646 1AD2 81 14 BP NEXX Not a continuation board
647 1AD4 10 LR DC,H
648 1AD5 7D LIS H'D'
649 1AD6 8E ADC
650 1AD7 0E LR Q,DC
651 1AD8 16 LM
652 1AD9 21 03 NI H'3' Get last used direction
653 1ADB 1F INC
654 1ADC 25 03 CI H'3'
655 1ADE 91 16 BM NEXY Last direction used
656 1AE0 55 LR 5,A
657 1AE1 20 FF LI -H'1'
658 1AE3 56 LR 6,A Set continuation flag
659 1AE4 29 1B 92 JMP RBJ0
660 1AE7 10 NEXX LR DC,H
661 1AE8 7D LIS H'D' Last used byte info
662 1AE9 8E ADC
663 1AEA 16 LM
664 1AEB 55 LR 5,A
665 1AEC 21 0F NI H'F'
666 1AEE 24 01 AI H'1'
667 1AF0 50 LR 0,A
668 1AF1 25 0F CI H'F'
**OPERATOR SYNTAX LINE # 669
669
670 1AF3 81 04 BP NEXA Is this the last byte and directio
671 1AF5 29 1D 13 NEXY JMP AFT Yes, so back up
672 1AF8 70 NEXA CLR
673 1AF9 52 LR 2,A Used as flag for move found
674 1AFA 71 LIS H'1' Set to 1 for normal back-up
675 1AFB 56 LR 6,A
676 1AFC 20 FF LI H'FF'
677 1AFE 51 LR 1,A All pieces allowed to move
678 1AFF 10 LR DC,H
679 1B00 40 LR A,0
680 1B01 12 SR 1
681 1B02 12 SR 1
682 1B03 21 03 NI H'3'
683 1B05 54 LR 4,A
684 1B06 70 CLR
685 1B07 E5 XS 5
686 1B08 25 0F CI H'F'
687 1B0A 91 0C BM NEXJ Jumps required
688 1B0C 40 LR A,0
689 1B0D 21 03 NI H'3'
690 1B0F 84 04 BZ NEN0
691 1B11 29 1C 81 JMP RBN0
692 1B14 29 1C 35 NEN0 JMP RFN
693 1B17 40 NEXJ LR A,0
694 1B18 21 03 NI H'3'
695 1B1A 84 04 BZ NEJ0
696 1B1C 29 1B 92 JMP RBJ0
697 1B1F 29 1B 36 NEJ0 JMP RFJ
698 *We enter here on going forward
699 1B22 10 FIND LR DC,H
700 1B23 28 1A 36 PI RASC Get board into SC
701 1B26 28 1E 96 PI EMPT Compute the empty squares
702 1B29 28 17 80 PI SHOW
703 1B2C 28 1E E9 PI WAST
704 1B2F 70 CLR
705 1B30 54 LR 4,A Start with byte 0
706 1B31 52 LR 2,A Mobility count and move-found flag
707 1B32 56 LR 6,A So all moves will be found
708 1B33 20 FF LI H'FF'
709 1B35 51 LR 1,A To find all possible jump moves
710 1B36 20 18 RFJ LI ISA Active pieces
711 1B38 C4 AS 4 Add byte off-set
712 1B39 0B LR IS,A Get to byte
713 1B3A 4C LR A,S
714 1B3B F1 NS 1 FF if normal, 1 bit only for conti
715 1B3C 53 LR 3,A 3 used to develop final byte
716 1B3D 28 1A 74 PI FKT Any forward moving pieces?
717 1B40 20 2A LI ISE+1 Look to empty squares forward
718 1B42 C4 AS 4 Add byte off-set
719 1B43 0B LR IS,A Destination byte location
720 1B44 4C LR A,S
721 1B45 12 SR 1
722 1B46 F3 NS 3
723 1B47 53 LR 3,A Only pieces that have place to lan
724 1B48 20 1C LI ISP Passive pieces
725 1B4A C4 AS 4
726 1B4B 0B LR IS,A
727 1B4C 4D LR A,I Look to RF passive pieces forward
728 1B4D 15 SL 4 In front of left-most bits
729 1B4E 50 LR 0,A
730 1B4F 4C LR A,S
731 1B50 14 SR 4 In front of right-most bits
732 1B51 12 SR 1
733 1B52 C0 AS 0
734 1B53 F3 NS 3
735 1B54 53 LR 3,A Pieces that can jump RF
736 1B55 84 0E BZ LFJ Were any found?
737 1B57 20 10 LI H'10' The RFJ direction and J indicator
738 1B59 55 LR 5,A
739 1B5A 28 1A 89 PI STMV Store move byte and info
740 1B5D 70 CLR
741 1B5E C6 AS 6 Recall indicator
742 1B5F 84 04 BZ LFJ We want all moves
743 1B61 29 1B F2 JMP FIN1
744 1B64 20 18 LFJ LI ISA
745 1B66 C4 AS 4 Add byte off-set
746 1B67 0B LR IS,A Get to initial byte
747 1B68 4C LR A,S
748 1B69 F1 NS 1 FF if normal, 1 bit only for conti
749 1B6A 53 LR 3,A
750 1B6B 28 1A 74 PI FKT
751 1B6E 20 2A LI ISE+1 Empty squares forward
752 1B70 C4 AS 4
753 1B71 0B LR IS,A
754 1B72 4C LR A,S
755 1B73 13 SL 1
756 1B74 F3 NS 3
757 1B75 53 LR 3,A Only pieces that have a place to l
758 1B76 20 1C LI ISP
759 1B78 C4 AS 4
760 1B79 0B LR IS,A
761 1B7A 4D LR A,I
762 1B7B 15 SL 4
763 1B7C 13 SL 1
764 1B7D 50 LR 0,A
765 1B7E 4C LR A,S
766 1B7F 14 SR 4
767 1B80 C0 AS 0
768 1B81 F3 NS 3
769 1B82 53 LR 3,A Pieces that can jump LF
770 1B83 84 15 BZ RBJ
771 1B85 20 11 LI H'11' The LFJ direction and J indicator
772 1B87 55 LR 5,A
773 1B88 28 1A 89 PI STMV
774 1B8B 70 CLR
775 1B8C E6 XS 6
776 1B8D 84 0B BZ RBJ
777 1B8F 29 1B F2 JMP FIN1
778 1B92 45 RBJ0 LR A,5
779 1B93 25 02 CI H'2' Which direction, 1, 2, or 3?
780 1B95 91 31 BM LBJ It was a 3
781 1B97 94 CC BNZ LFJ It was a 1
782 1B99 20 18 RBJ LI ISA
783 1B9B C4 AS 4 Add byte off-set
784 1B9C 0B LR IS,A Get to initial byte
785 1B9D 4C LR A,S
786 1B9E F1 NS 1 FF if normal, 1 bit only for conti
787 1B9F 53 LR 3,A
788 1BA0 28 1A 7C PI BKT
789 1BA3 20 28 LI ISE-1 Look to empty squares backward
790 1BA5 C4 AS 4
791 1BA6 0B LR IS,A
792 1BA7 4C LR A,S
793 1BA8 12 SR 1
794 1BA9 F3 NS 3
795 1BAA 53 LR 3,A
796 1BAB 20 1B LI ISP-1 Look to passive pieces backward
797 1BAD C4 AS 4
798 1BAE 0B LR IS,A
799 1BAF 4D LR A,I
800 1BB0 15 SL 4
801 1BB1 50 LR 0,A
802 1BB2 4C LR A,S
803 1BB3 14 SR 4
804 1BB4 12 SR 1
805 1BB5 C0 AS 0
806 1BB6 F3 NS 3
807 1BB7 53 LR 3,A Pieces that can jump RB
808 1BB8 84 0E BZ LBJ
809 1BBA 20 12 LI H'12' The RBJ direction and J indicator
810 1BBC 55 LR 5,A
811 1BBD 28 1A 89 PI STMV
812 1BC0 70 CLR
813 1BC1 E6 XS 6
814 1BC2 84 04 BZ LBJ
815 1BC4 29 1B F2 JMP FIN1
816 1BC7 20 18 LBJ LI ISA
817 1BC9 C4 AS 4 Add byte off-set
818 1BCA 0B LR IS,A Get to initial byte
819 1BCB 4C LR A,S
820 1BCC F1 NS 1 FF if normal, 1 bit only for conti
821 1BCD 53 LR 3,A
822 1BCE 28 1A 7C PI BKT
823 1BD1 20 28 LI ISE-1 Empty squares backward
824 1BD3 C4 AS 4
825 1BD4 0B LR IS,A
826 1BD5 4C LR A,S
827 1BD6 13 SL 1
828 1BD7 F3 NS 3
829 1BD8 53 LR 3,A
830 1BD9 20 1B LI ISP-1 Look to passive pieces backward
831 1BDB C4 AS 4
832 1BDC 0B LR IS,A
833 1BDD 4D LR A,I
834 1BDE 15 SL 4
835 1BDF 13 SL 1
836 1BE0 50 LR 0,A
837 1BE1 4C LR A,S
838 1BE2 14 SR 4
839 1BE3 C0 AS 0
840 1BE4 F3 NS 3
841 1BE5 53 LR 3,A Pieces that can jump LB
842 1BE6 84 17 BZ FIN3
843 1BE8 20 13 LI H'13' The RBJ direction and J indicator
844 1BEA 55 LR 5,A
845 1BEB 28 1A 89 PI STMV
846 1BEE 70 CLR
847 1BEF E6 XS 6
848 1BF0 84 11 BZ FIN4 We want them all
849 1BF2 4B FIN1 LR A,HL Jump found, where are we?
850 1BF3 14 SR 4 To get the ply
851 1BF4 25 0C FIN2 CI H'C' Are we out of space? (next block c
852 * SET TEMPORARILY LOW TO CHECK FOR TROUBLE, COULD BE AT D
853 1BF6 91 04 BM FINX To compute non-jump mobility and s
854 1BF8 29 1D 06 JMP NOR4 Save mobility and go to SELE
855 1BFB 29 1E 1D FINX JMP EVAL TEMPORARY SAFETY STOP, SHOULD GO T
856 1BFE 70 FIN3 CLR
857 1BFF E6 XS 6
858 1C00 91 28 BM FIN9 Continuation case
859 1C02 44 FIN4 LR A,4 Go to next board byte
860 1C03 1F INC
861 1C04 21 03 NI H'3'
862 1C06 54 LR 4,A
863 1C07 84 04 BZ FIN5 There are no more
864 1C09 29 1B 36 JMP RFJ Go round again for next byte
865 1C0C 70 FIN5 CLR
866 1C0D E6 XS 6
867 1C0E 84 04 BZ FIN6
868 1C10 29 1D 13 JMP AFT No more jumps
869 1C13 70 FIN6 CLR
870 1C14 E2 XS 2 Have any jumps been found?
871 1C15 94 04 BNZ FIN7 Yes
872 1C17 29 1C 35 JMP RFN Check on normal moves
873 1C1A 4B FIN7 LR A,HL
874 1C1B 14 SR 4
875 1C1C 25 01 CI H'1'
876 1C1E 94 07 BNZ FIN8
877 1C20 28 13 00 PI BORD
878 1C23 29 11 00 JMP PMOV
879 1C26 29 18 00 FIN8 JMP SELE
880 *
881 1C29 10 FIN9 LR DC,H There was no continuation
882 1C2A 28 1A 36 PI RASC Put data back into SC
883 1C2D 10 LR DC,H
884 1C2E 20 E0 LI H'E0' Back up 2
885 1C30 8E ADC
886 1C31 11 LR H,DC
887 1C32 29 19 59 JMP FORE and go forward
888 * RFN LFN RBN LBN NORF NORT
889 1C35 20 18 RFN LI ISA
890 1C37 C4 AS 4 Add byte off-set
891 1C38 0B LR IS,A Get to initial byte
892 1C39 4C LR A,S
893 1C3A 53 LR 3,A
894 1C3B 28 1A 74 PI FKT
895 1C3E 84 49 BZ RBN
896 1C40 20 29 LI ISE Start of empty region
897 1C42 C4 AS 4 Add off-set
898 1C43 0B LR IS,A
899 1C44 4D LR A,I Look to RF empty squares
900 1C45 15 SL 4
901 1C46 50 LR 0,A
902 1C47 4C LR A,S
903 1C48 14 SR 4
904 1C49 12 SR 1
905 1C4A C0 AS 0
906 1C4B F3 NS 3
907 1C4C 53 LR 3,A Pieces that can move RF
908 1C4D 84 0D BZ LFN
909 1C4F 70 CLR
910 1C50 55 LR 5,A
911 1C51 28 1A 89 PI STMV
912 1C54 70 CLR
913 1C55 E6 XS 6
914 1C56 84 04 BZ LFN
915 1C58 29 1C D1 JMP NORF
916 1C5B 20 18 LFN LI ISA
917 1C5D C4 AS 4 Add byte off-set
918 1C5E 0B LR IS,A Get to initial byte
919 1C5F 4C LR A,S
920 1C60 53 LR 3,A
921 1C61 28 1A 74 PI FKT
922 1C64 84 23 BZ RBN
923 1C66 20 29 LI ISE Start of empty region
924 1C68 C4 AS 4 Add off-set
925 1C69 0B LR IS,A
926 1C6A 4D LR A,I Look to LF empty squares
927 1C6B 15 SL 4
**OPERATOR SYNTAX LINE # 928
928
929 1C6C 13 SL 1
930 1C6D 50 LR 0,A
931 1C6E 4C LR A,S
932 1C6F 14 SR 4
933 1C70 C0 AS 0
934 1C71 F3 NS 3
935 1C72 53 LR 3,A Pieces that can move LF
936 1C73 84 14 BZ RBN
937 1C75 71 LIS H'1'
938 1C76 55 LR 5,A
939 1C77 28 1A 89 PI STMV
940 1C7A 70 CLR
941 1C7B E6 XS 6
942 1C7C 84 0B BZ RBN
943 1C7E 29 1C D1 JMP NORF
944 1C81 45 RBN0 LR A,5
945 1C82 25 02 CI H'2' Which direction, 1, 2, or 3?
946 1C84 91 29 BM LBN It was a 3
947 1C86 94 D4 BNZ LFN It was a 1
948 1C88 20 18 RBN LI ISA
949 1C8A C4 AS 4 Add byte off-set
950 1C8B 0B LR IS,A Get to initial byte
951 1C8C 4C LR A,S
952 1C8D 53 LR 3,A
953 1C8E 28 1A 7C PI BKT
954 1C91 84 42 BZ NORT
955 1C93 20 28 LI ISE-1
956 1C95 C4 AS 4 Add off-set
957 1C96 0B LR IS,A
958 1C97 4D LR A,I Look to RB empty squares
959 1C98 15 SL 4
960 1C99 50 LR 0,A
961 1C9A 4C LR A,S
962 1C9B 14 SR 4
963 1C9C 12 SR 1
964 1C9D C0 AS 0
965 1C9E F3 NS 3
966 1C9F 53 LR 3,A Pieces that can move RB
967 1CA0 84 0D BZ LBN
968 1CA2 72 LIS H'2'
969 1CA3 55 LR 5,A
970 1CA4 28 1A 89 PI STMV
971 1CA7 70 CLR
972 1CA8 E6 XS 6
973 1CA9 84 04 BZ LBN
974 1CAB 29 1C D1 JMP NORF
975 1CAE 20 18 LBN LI ISA
976 1CB0 C4 AS 4 Add byte off-set
977 1CB1 0B LR IS,A Get to initial byte
978 1CB2 4C LR A,S
979 1CB3 53 LR 3,A
980 1CB4 28 1A 7C PI BKT
981 1CB7 84 1C BZ NORT
982 1CB9 20 28 LI ISE-1
983 1CBB C4 AS 4 Add off-set
984 1CBC 0B LR IS,A
985 1CBD 4D LR A,I Look to LB empty squares
986 1CBE 15 SL 4
987 1CBF 13 SL 1
988 1CC0 50 LR 0,A
989 1CC1 4C LR A,S
990 1CC2 14 SR 4
991 1CC3 C0 AS 0
992 1CC4 F3 NS 3
993 1CC5 53 LR 3,A Pieces that can move LB
994 1CC6 84 0D BZ NORT
995 1CC8 73 LIS H'3'
996 1CC9 55 LR 5,A
997 1CCA 28 1A 89 PI STMV
998 1CCD 70 CLR
999 1CCE E6 XS 6
1000 1CCF 84 04 BZ NORT
1001 1CD1 29 18 00 NORF JMP SELE
1002 *We get here if we want to compute mobility and also if no moves f
1003 1CD4 44 NORT LR A,4
1004 1CD5 1F INC
1005 1CD6 21 03 NI H'3'
1006 1CD8 54 LR 4,A
1007 1CD9 84 04 BZ NOR0
1008 1CDB 29 1C 35 JMP RFN Go round again for next byte
1009 1CDE 70 NOR0 CLR
1010 1CDF E2 XS 2 Get mobility count
1011 1CE0 94 04 BNZ NOR1
1012 1CE2 29 1D 13 JMP AFT Woops! no move found
1013 1CE5 4B NOR1 LR A,HL Where are we?
1014 1CE6 14 SR 4 Get Ply number
1015 1CE7 24 FF AI -H'1'
1016 1CE9 94 07 BNZ NOR2 Checking for possible player's mov
1017 1CEB 28 13 00 PI BORD Put up board for player
1018 1CEE 29 11 00 JMP PMOV Yes, so let him move
1019 1CF1 2A 0C 28 NOR2 DCI PLY0 Player's choice of ply
1020 1CF4 88 AM
1021 1CF5 10 LR DC,H Reset DC
1022 1CF6 91 0F BM NOR4 Go on in this case
1023 1CF8 94 0A BNZ NOR3 Stop for sure
1024 1CFA 20 F5 LI H'F5' Decision based on previous move
1025 1CFC 8E ADC
1026 1CFD 16 LM
1027 1CFE 21 10 NI H'10' Test jump flag
1028 1D00 10 LR DC,H
1029 1D01 94 04 BNZ NOR4 Go on if previous move was a jump
1030 1D03 29 1E 1D NOR3 JMP EVAL
1031 1D06 4B NOR4 LR A,HL
1032 1D07 14 SR 4
1033 1D08 24 FF AI -H'1'
1034 1D0A 2A 0F B0 DCI MOBS
1035 1D0D 8E ADC
1036 1D0E 42 LR A,2
1037 1D0F 17 ST Save mobility in MOBS space indexe
1038 1D10 29 18 00 NOR7 JMP SELE
1039 * AFT
1040 MAT EQU H'0' Register used for Material Adv. te
1041 POT EQU H'6' Register used for Positional Adv.
1042 HLS EQU H'4' Register to save starting HL
1043 SCS EQU H'5' Register to save starting SCOR off
1044 *No more moves found so time to back up
1045 1D13 4B AFT LR A,HL Prepare to back up
1046 1D14 25 20 CI H'20'
1047 1D16 94 0F BNZ AFT0 Not at end of tree search
1048 *Prepare for verification of player's reply
1049 1D18 24 F0 AI H'F0' Back to player's board
1050 1D1A 5B LR HL,A
1051 1D1B 47 LR A,7
1052 1D1C 18 COM Reverse sides
1053 1D1D 57 LR 7,A
1054 1D1E 2A 0E D0 DCI PLMV This space is also used by TREE ro
1055 1D21 70 CLR Clear first byte
1056 1D22 17 ST
1057 1D23 29 1B 22 JMP FIND Get verification info for move
1058 1D26 54 AFT0 LR HLS,A Save HL at start
1059 1D27 14 SR 4
1060 1D28 24 FF AI -H'1'
1061 1D2A 13 SL 1 2 bytes per entry
1062 1D2B 55 LR SCS,A Save SCOR offset at start
1063 1D2C 2A 0E F0 DCI SCOR
1064 1D2F 8E ADC
1065 1D30 0E LR Q,DC We'll use this as reference point
1066 1D31 16 LM
1067 1D32 50 LR 0,A The current material advantage ter
1068 1D33 16 LM
1069 1D34 56 LR 6,A The current positional term
1070 1D35 4B LR A,HL
1071 1D36 25 30 CI H'30'
1072 1D38 84 97 BZ AFT5 Can't prune and not double jump
1073 1D3A 90 95 BR AFT5 TEMPORARY BYPASS ----
1074 1D3C 10 AFTE LR DC,H EVAL enters here
1075 1D3D 24 FE AI -H'2' Look at previous ACTM
1076 1D3F 8E ADC
1077 1D40 70 CLR
1078 1D41 8C XM At continuation board?
1079 1D42 4B LR A,HL
1080 1D43 91 04 BM AFTC
1081 1D45 29 1D AA JMP AFT1 Not a continuation board
1082 * At a continuation board
1083 1D48 24 FE AFTC AI -H'2' To look at passed board ACTM
1084 1D4A 5B LR HL,A
1085 1D4B 0F AFC1 LR DC,Q
1086 1D4C 20 FC LI -H'4' Back 2 levels
1087 1D4E 8E ADC
1088 1D4F 0E LR Q,DC
1089 1D50 40 LR A,0
1090 1D51 8D CM
1091 1D52 91 09 BM AFC2 Should back score for sure
1092 1D54 94 4E BNZ AFC7 Don't back score
1093 1D56 46 LR A,6 First terms the same so try second
1094 1D57 8D CM
1095 1D58 91 03 BM AFC2 Should back score
1096 1D5A 90 48 BR AFC7 Don't back score
1097 1D5C 0F AFC2 LR DC,Q
1098 1D5D 40 LR A,0
1099 1D5E 17 ST
1100 1D5F 46 LR A,6
1101 1D60 17 ST
1102 1D61 4B LR A,HL
1103 1D62 21 10 NI H'10' Is machine's side moving
1104 1D64 94 3E BNZ AFC7 No, so no need to back more
1105 1D66 4B LR A,HL
1106 1D67 25 4E CI H'4E' Have we passed the 4th level
1107 1D69 84 0D BZ AFC3 We may want to save this board
1108 1D6B 90 0B BR AFC3 DEBUGGING BYPASS ----
1109 1D6D 70 LIS H'E0' Look 2 boards earlier
1110 1D6E CB AS HL H already points at ACTM
1111 1D6F 5B LR HL,A Here's where H gets changed
1112 1D70 10 LR DC,H
1113 1D71 70 CLR
1114 1D72 8C XM
1115 1D73 91 D7 BM AFC1 Go around again
1116 1D75 90 2D BR AFC7
1117 1D77 0F AFC3 LR DC,Q
1118 1D78 20 FE LI -H'2' Back 1 level now
1119 1D7A 8E ADC
1120 1D7B 0E LR Q,DC
1121 1D7C 46 LR A,6
1122 1D7D 18 COM Negate scores for odd back-up
1123 1D7E 1F INC
1124 1D7F 56 LR 6,A
1125 1D80 40 LR A,0
1126 1D81 82 04 BC AFC4
1127 1D83 18 COM
1128 1D84 90 03 BR AFC5
1129 1D86 18 AFC4 COM
1130 1D87 1F INC
1131 1D88 50 AFC5 LR 0,A
1132 1D89 8D CM
1133 1D8A 91 07 BM AFC6
1134 1D8C 94 86 BNZ AF12
1135 1D8E 46 LR A,6
1136 1D8F 8D CM
1137 1D90 81 12 BP AFC7
1138 * Move the score to the HL=20 level and save board
1139 * from the starting level to the TREE level
1140 1D92 0F AFC6 LR DC,Q
1141 1D93 40 LR A,0
1142 1D94 17 ST
1143 1D95 46 LR A,6
1144 1D96 17 ST
1145 1D97 44 LR A,HLS
1146 1D98 5B LR HL,A
1147 1D99 10 LR DC,H
1148 1D9A 2C XDC
1149 1D9B 2A 0E 10 DCI TREE
1150 1D9E 62 LISU 2
1151 1D9F 68 LISL 0
1152 1DA0 28 43 CD PI TRAN
1153 1DA3 20 E0 AFC7 LI H'E0'
1154 1DA5 C4 AS HLS
1155 1DA6 5B LR HL,A
1156 1DA7 29 1E 13 JMP AF12
1157 * Could be backing into a multiple jump
1158 1DAA 24 EE AFT1 AI H'EE' Look at ATCM back 2 boards
1159 1DAC 5B AFT2 LR HL,A
1160 1DAD 10 LR DC,H
1161 1DAE 70 CLR
1162 1DAF 8C XM
1163 1DB0 81 0D BP AFT3 Not a passed board
1164 1DB2 90 1D BR AFT5 TEMPORARY FIX ONLY
1165 1DB4 0F LR DC,Q Try 2 more levels back
1166 1DB5 20 FC LI -H'4'
1167 1DB7 8E ADC
1168 1DB8 0E LR Q,DC
1169 1DB9 20 E0 LI H'E0'
1170 1DBB CB AS HL
1171 1DBC 90 EF BR AFT2 Go around again
1172 1DBE 0F AFT3 LR DC,Q Now we can try to prune
1173 1DBF 20 FC LI -H'4' 2 levels earlier
1174 1DC1 8E ADC
1175 1DC2 40 LR A,0
1176 1DC3 8D CM
1177 1DC4 91 0B BM AFT5 Can't alpha-beta prune
1178 1DC6 94 05 BNZ AFT4 Can prune
1179 1DC8 46 LR A,6 First terms the same, try second t
1180 1DC9 8D CM
1181 1DCA 91 05 BM AFT5 Can't prune
1182 1DCC 20 F2 AFT4 LI -H'E' Back up to start of this level
1183 1DCE 90 40 BR AF11 A successful prune
1184 * Now try an ordinary back-up
1185 1DD0 44 AFT5 LR A,HLS Reestablish starting conditions
1186 1DD1 5B LR HL,A
1187 1DD2 20 FE LI -H'2'
1188 1DD4 C5 AS SCS
1189 1DD5 2A 0E F0 DCI SCOR
1190 1DD8 8E ADC
1191 1DD9 0E LR Q,DC
1192 1DDA 46 LR A,6 Change sign of score terms
1193 1DDB 18 COM
1194 1DDC 1F INC
1195 1DDD 56 LR 6,A
1196 1DDE 40 LR A,0
1197 1DDF 82 04 BC AFT6
1198 1DE1 18 COM
1199 1DE2 90 03 BR AFT7
1200 1DE4 18 AFT6 COM
1201 1DE5 1F INC
1202 1DE6 50 AFT7 LR 0,A
1203 1DE7 8D CM
1204 1DE8 91 07 BM AFT8 Back score for sure
1205 1DEA 94 19 BNZ AFT9 Do not back score
1206 1DEC 46 LR A,6 Must test second bytes
1207 1DED 8D CM
1208 1DEE 81 15 BP AFT9 Do not back scores
1209 1DF0 0F AFT8 LR DC,Q
1210 1DF1 40 LR A,0
1211 1DF2 17 ST
1212 1DF3 46 LR A,6
1213 1DF4 17 ST
1214 1DF5 4B LR A,HL
1215 1DF6 25 30 CI H'30' Should we save this board?
1216 1DF8 94 0B BNZ AFT9 No
1217 1DFA 10 LR DC,H
1218 1DFB 2C XDC
1219 1DFC 2A 0E 10 DCI TREE
1220 1DFF 62 LISU 2
1221 1E00 68 LISL 0
1222 1E01 28 43 CD PI TRAN
1223 1E04 28 17 80 AFT9 PI SHOW
1224 1E07 28 1E E9 PI WAST
1225 1E0A 47 LR A,7
1226 1E0B 18 COM
1227 1E0C 57 LR 7,A
1228 1E0D 20 F0 LI H'F0' Back up 1 level
1229 1E0F CB AF11 AS HL
1230 1E10 5B LR HL,A
1231 1E11 71 LIS H'1'
1232 1E12 56 LR 6,A
1233 1E13 10 AF12 LR DC,H
1234 1E14 28 1A 36 PI RASC
1235 1E17 28 1E 96 PI EMPT
1236 1E1A 29 18 00 JMP SELE
1237 * EVAL
1238 1E1D 20 26 EVAL LI ACTM Compute the material advantage ter
1239 1E1F 0B LR IS,A
1240 1E20 4D LR A,I
1241 1E21 50 LR 0,A ACTM
1242 1E22 4D LR A,I
1243 1E23 52 LR 2,A PASM
1244 1E24 18 COM
1245 1E25 1F INC
1246 1E26 C0 AS 0
1247 1E27 53 LR 3,A ACTM-PASM
1248 1E28 81 03 BP EVA0
1249 1E2A 18 COM
1250 1E2B 1F INC
1251 1E2C 51 EVA0 LR 1,A |A-P|
1252 1E2D 40 LR A,0
1253 1E2E C2 AS 2
1254 1E2F 18 COM
1255 1E30 1F INC
1256 1E31 24 30 AI H'30' Add 48
1257 1E33 52 LR 2,A 48-A-P
1258 1E34 70 CLR by smaller pos. # in 1
1259 1E35 50 LR 0,A Product into 0
1260 1E36 41 LR A,1
1261 1E37 21 01 EVA1 NI H'1' Is the rightmost bit a 1?
1262 1E39 84 04 BZ EVA2 No
1263 1E3B 42 LR A,2
1264 1E3C C0 AS 0
1265 1E3D 50 LR 0,A
1266 1E3E 42 EVA2 LR A,2
1267 1E3F 13 SL 1
1268 1E40 52 LR 2,A
1269 1E41 41 LR A,1
1270 1E42 12 SR 1
1271 1E43 51 LR 1,A
1272 1E44 94 F2 BNZ EVA1 Product is not complete
1273 1E46 70 CLR
1274 1E47 E3 XS 3 To get sign
1275 1E48 40 LR A,0
1276 1E49 81 04 BP EVA3
1277 1E4B 18 COM
1278 1E4C 1F INC
1279 1E4D 50 LR 0,A Material advantage with sign
1280 1E4E 4B EVA3 LR A,HL
1281 1E4F 54 LR HLS,A Save starting HL
1282 1E50 14 SR 4
1283 1E51 24 FF AI -H'1'
1284 1E53 55 LR 5,A We'll need it again
1285 1E54 13 SL 1 2 bytes per entry
1286 1E55 55 LR SCS,A Save initial score offset also
1287 1E56 2A 0E F0 DCI SCOR
1288 1E59 8E ADC
1289 1E5A 0E LR Q,DC Used as reference point by AFT
1290 1E5B 2A 0F B0 DCI MOBS Compute mobility term
1291 1E5E 20 FF LI -H'1'
1292 1E60 C5 AS 5
1293 1E61 8E ADC
1294 1E62 16 LM Get earlier mobility
1295 1E63 18 COM
1296 1E64 1F INC
1297 1E65 C2 AS 2 Add current mobility
1298 1E66 25 07 CI H'7' Difference limited to absolute 7
1299 1E68 81 02 BP EVA4
1300 1E6A 77 LIS H'7'
1301 1E6B 25 F9 EVA4 CI -H'7'
1302 1E6D 91 03 BM EVA5
1303 1E6F 20 F9 LI -H'7'
1304 1E71 15 EVA5 SL 4 Make room for ply term
1305 1E72 56 LR 6,A Save difference (and free 2)
1306 1E73 45 EVA6 LR A,5 Get ply value
1307 1E74 81 07 BP EVA7 Test sign of MATL term
1308 1E76 18 COM If neg. we add H'10'-M
1309 1E77 1F INC
1310 1E78 24 10 AI H'10'
1311 1E7A 90 03 BR EVA8
1312 1E7C 24 F0 EVA7 AI -H'10' If pos. we add M-H'10'
1313 1E7E C6 EVA8 AS 6 Add it in
1314 1E7F 56 LR 6,A Positional term with PLY
1315 1E80 81 0B BP EVA9 No carry
1316 1E82 20 FF LI H'FF'
1317 1E84 C0 AS 0
1318 1E85 50 LR 0,A
1319 1E86 91 05 BM EVA9
1320 1E88 46 LR A,6
1321 1E89 18 COM
1322 1E8A 1F INC
1323 1E8B 56 LR 6,A
1324 1E8C 4B EVA9 LR A,HL
1325 1E8D 54 LR HLS,A
1326 1E8E 14 SR 4
1327 1E8F 24 FF AI -H'1'
1328 1E91 13 SL 1
1329 1E92 55 LR SCS,A
1330 1E93 29 1D 3C JMP AFTE AFT routine handles from here on
1331 * EMPT CAQ MPYR WAST
1332 1E96 08 EMPT LR K,P Empty squares in O'51' thru O'54'
1333 1E97 65 LISU ELOC with guard bytes in 50 and 55
1334 1E98 68 LISL 0
1335 1E99 70 CLR
1336 1E9A 5C LR S,A Make sure guard byte is empty
1337 1E9B 63 LISU PLOC Start with ACTIVE
1338 1E9C 74 LIS H'4'
1339 1E9D 50 LR 0,A
1340 1E9E 90 05 BR EMP3
1341 1EA0 0A EMP2 LR A,IS
1342 1EA1 24 30 AI H'30' Actually subtracting 16
1343 1EA3 0B LR IS,A
1344 1EA4 4C EMP3 LR A,S
1345 1EA5 51 LR 1,A
1346 1EA6 0A LR A,IS
1347 1EA7 24 04 AI 4
1348 1EA9 0B LR IS,A
1349 1EAA 4C LR A,S
1350 1EAB C1 AS 1
1351 1EAC 51 LR 1,A
1352 1EAD 0A LR A,IS
1353 1EAE 24 0D AI H'D' Add 13 get to the correct EMPTY lo
1354 1EB0 0B LR IS,A
1355 1EB1 41 LR A,1
1356 1EB2 18 COM Reverse 1's and 0's
1357 1EB3 5C LR S,A
1358 1EB4 30 DS 0
1359 1EB5 94 EA BNZ EMP2
1360 1EB7 4D LR A,I To index only
1361 1EB8 70 CLR
1362 1EB9 5C LR S,A Upper guard byte
1363 1EBA 0C PK
1364 *-*-*-*-*-*-*-*-*-*
1365 1EBB 08 CAQ LR K,P To add count of bits in 0 to count
1366 1EBC 40 LR A,0
1367 1EBD 84 08 BZ CAQ4
1368 1EBF 31 CAQ2 DS 1
1369 1EC0 24 FF AI H'FF'
1370 1EC2 F0 NS 0
1371 1EC3 50 LR 0,A
1372 1EC4 94 FA CAQ3 BNZ CAQ2
1373 1EC6 0C CAQ4 PK
1374 *-*-*-*-
1375 1EC7 08 MPYR LR K,P Multiplies larger pos. number in 2
1376 1EC8 70 CLR by smaller pos. # in 1
1377 1EC9 50 LR 0,A Product into 0
1378 1ECA 41 LR A,1
1379 1ECB 21 01 MPY1 NI H'1' Is the rightmost bit a 1?
1380 1ECD 84 04 BZ MPY2 No
1381 1ECF 42 LR A,2
1382 1ED0 C0 AS 0
1383 1ED1 50 LR 0,A
1384 1ED2 42 MPY2 LR A,2
1385 1ED3 13 SL 1
1386 1ED4 52 LR 2,A
1387 1ED5 41 LR A,1
1388 1ED6 12 SR 1
1389 1ED7 51 LR 1,A
1390 1ED8 94 F2 BNZ MPY1 Product is not complete
1391 1EDA 0C PK
1392 *-*-*-
1393 *First replies (maximum of 4 each)
1394 1EDB 33 BOK2 DC H'33' 24,20 24-20 To 12-16
1395 1EDC 33 DC H'33' 24-20, 24-20
1396 1EDD 43 DC H'43' 23-19, 24-20 To 11-15
1397 1EDE 20 DC H'20' 22-17, 24-19
1398 1EDF 22 DC H'22' 22-17, 22-17 To 10-14
1399 1EE0 22 DC H'22' 22-17, 22-17
1400 1EE1 55 DC H'55' 22-18, 22-18 To 9-13
1401 1EE2 55 DC H'55' 22-18, 22-18
1402 1EE3 31 DC H'31' 24-20, 23-18 To 11-16
1403 1EE4 45 DC H'45' 24-19, 22-18
1404 1EE5 66 DC H'66' 21-17, 21-17 To 10-15
1405 1EE6 66 DC H'66' 21-17, 21-17
1406 1EE7 55 DC H'55' 22-18, 22-18 To 9-14
1407 1EE8 55 DC H'55' 22-18, 22-18
1408 *-*-*-
1409 1EE9 08 WAST LR K,P Delay loop to WASTE some time
1410 1EEA 71 LIS H'1' Should be about 2 sec.
1411 1EEB 50 LR 0,A
1412 1EEC 70 WAS2 CLR
1413 1EED 51 LR 1,A
1414 1EEE 70 WAS3 CLR
1415 1EEF 52 LR 2,A
1416 1EF0 32 WAS4 DS 2
1417 1EF1 94 FE BNZ WAS4
1418 1EF3 31 DS 1
1419 1EF4 94 F9 BNZ WAS3
1420 1EF6 30 DS 0
1421 1EF7 94 F4 BNZ WAS2
1422 1EF9 0C PK
1423 *
1424 1EFA 00 PAT1 DC 0
1425 1EFB 00 DC 0
1426 1EFC 00 DC 0
1427 1EFD 00 DC 0
1428 1EFE 00 DC 0
1429 1EFF 00 DC 0
1430 1F00 00 DC 0
1431 1F01 00 DC 0
1432 1F02 00 DC 0
1433 1F03 00 DC 0
1434 1F04 00 DC 0
1435 1F05 00 DC 0
1436 1F06 00 DC 0
1437 1F07 00 DC 0
1438 1F08 00 DC 0
1439 1F09 00 DC 0
1440 1F0A 00 DC 0
1441 1F0B 00 DC 0
1442 1F0C 00 DC 0
1443 1F0D 00 DC 0
1444 1F0E 00 DC 0
1445 1F0F 00 DC 0
1446 1F10 00 DC 0
1447 1F11 00 DC 0
1448 1F12 00 DC 0
1449 1F13 00 DC 0
1450 1F14 00 DC 0
1451 1F15 00 DC 0
1452 1F16 00 DC 0
1453 1F17 00 DC 0
1454 1F18 00 DC 0
1455 1F19 00 DC 0
1456 1F1A 00 DC 0
END
NUMBER OF ERRORS= 2
1
J =0009 VY =0004 VX =0003 HU =000A HL =000B Y =0002
X =0001 ISA =0018 EVAL 1E1D HSAL =0C27 TRAN =43CD UDAT =424D
HSAV =0C26 EVA0 1E2C EVA1 1E37 EVA2 1E3E EVA3 1E4E EVA4 1E6B
EVA5 1E71 EVA6 1E73 EVA7 1E7C EVA8 1E7E EVA9 1E8C MOBS =0FB0
WMC =1200 TXC =0FE8 SHCB =0FE2 AFC1 1D4B AFC2 1D5C AFC3 1D77
AFC4 1D86 AFC5 1D88 AFC6 1D92 AFC7 1DA3 REDM 1A31 ISE =0029
TREE =0E10 CLER =4762 ISE0 =0028 TRE2 =0E20 TRE3 =0E30 TRE5 =0E50
WDG =4105 UPI =0FFA ULIN =00F5 WAIT =4501 LFJ 1B64 LBJ 1BC7
RBJ 1B99 RFJ 1B36 OBJ0 =0C30 NEJ0 1B1F RBJ0 1B92 OBJ1 =0F10
ISK =0020 BOK2 1EDB SHL =27C6 DELE 1828 SELE 1800 BFLG =0C20
INLH 183E WTLN =0FE5 YBLN =0C23 XBLN =0C22 SELX =0C2A COL0 =0C29
DEL2 1838 INL2 1847 INL3 184D SEL3 1813 SEL4 181E COM =08F7
JUMA 1892 JUMB 1893 JUMC 18AD PLMD =0E5B BCMD =006D TCMD =0044
PLMF =0EE0 JUMP 1868 TEMP =0008 PLMV =0ED0 BKMV =0C25 STMV 1A89
STM0 1A93 JUM1 187D STM1 1A9A JUM2 18A0 STM2 1AB7 JUM3 18A1
STM3 1AA8 JUM4 18BA NOM4 193F STM4 1AAF JUM5 18BF NOM5 1946
STM5 1ABA JUM6 18C6 NOM6 194B JUM7 18D7 JUM9 18DB LFN 1C5B
LBN 1CAE RBN 1C88 RFN 1C35 DBNC =0FEB FIND 1B22 LINE =0FDF
BLNF =0C21 BCNT =0C24 FINX 1BFB NEN0 1B14 RBN0 1C81 FIN1 1BF2
FIN2 1BF4 FIN3 1BFE FIN4 1C02 FIN5 1C0C FIN6 1C13 FIN7 1C1A
FIN8 1C26 FIN9 1C29 ELOC =0005 KLOC =0004 PLOC =0003 TCOL =0080
XZOP =0034 SCOR =0EF0 YPOS =0F0F XPOS =0F0C PMOV =1100 SHOW =1780
ISP =001C INPF =0FE3 POPS =40BC EMPT 1E96 EMP2 1EA0 EMP3 1EA4
CAQ 1EBB CAQ2 1EBF CAQ3 1EC4 CAQ4 1EC6 TIR =45DB SHR =27D3
SCRA 1A47 BORD =1300 FORE 1959 NORF 1CD1 CMRG =0FEA INRH 184F
SCRL 1A6D NORM 1926 NORT 1CD4 NOR0 1CDE NOR1 1CE5 INR2 185A
NOR2 1CF1 FOR2 195E NOR3 1D03 SCR3 1A6E FOR3 198F NOR4 1D06
FOR4 1992 FOR5 19B7 FOR6 19ED NOR7 1D10 WMS =4205 CDS =41D5
IJS =22DB HLS =0004 SPS =40D0 SCS =0005 FCS =43D6 RASC 1A36
PUSH =40A9 PASM =0027 WAST 1EE9 YTST =0009 RGSV =0FC1 WAS2 1EEC
RAS2 1A39 WAS3 1EEE RAS3 1A40 WAS4 1EF0 POT =0006 CHT =0003
BKT 1A7C AFT 1D13 MAT =0000 FKT 1A74 AFTC 1D48 AFTE 1D3C
BOTH 1860 ACTM =0026 AFT0 1D26 PAT1 1EFA AFT1 1DAA AFT2 1DAC
FKT2 1A79 AFT3 1DBE AFT4 1DCC AFT5 1DD0 AFT6 1DE4 AFT7 1DE6
AFT8 1DF0 AFT9 1E04 WAUD =41C8 WAU1 =41CC BMV2 1A0B NEXA 1AF8
NEXJ 1B17 NEXT 1AC7 NEXX 1AE7 NEXY 1AF5 MAXY =004D PLYD =00FD
PLYH =00FC JOYI =21AD MPYR 1EC7 JOYT =0C00 PLYT =00FE PLY0 =0C28
MPY1 1ECB MPY2 1ED2 FK1 1A81 JU11 187F AF11 1E0F AF12 1E13
BM17 1A11 BM18 1A13 BM19 1A1A FK2 1A88 JU71 18DE JU72 190C
JU73 1913